From: Jasper St. Pierre Date: Thu, 19 Sep 2013 00:17:32 +0000 (-0400) Subject: overviewControls: Don't allow appearing controls to "pop in" X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~3326 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=e31693bbeea706bc646298d935e5e55e9ef01565;p=gnome-shell.git overviewControls: Don't allow appearing controls to "pop in" When coming back from search or apps, the workspace thumbnails and dash don't slide in but "pop in". This is because of bad timing: when slideIn is called, we immediately start the translation animation, and it completes before by the time we fade the new page in. Fix this by calling slideIn and slideOut at two different times: we now slide out when the old page with our controls is fading out, and slide in when the new page with our controls is fading in. https://bugzilla.gnome.org/show_bug.cgi?id=708340 --- diff --git a/js/ui/overviewControls.js b/js/ui/overviewControls.js index c16c4ac54..f5314762e 100644 --- a/js/ui/overviewControls.js +++ b/js/ui/overviewControls.js @@ -208,23 +208,12 @@ const SlidingControl = new Lang.Class({ slideIn: function() { this.visible = true; this._updateTranslation(); - // we will update slideX and the translation from pageEmpty }, slideOut: function() { this.visible = false; this._updateTranslation(); - // we will update slideX from pageEmpty }, - - pageEmpty: function() { - // When pageEmpty is received, there's no visible view in the - // selector; this means we can now safely set the full slide for - // the next page, since slideIn or slideOut might have been called, - // changing the visiblity - this.layout.slideX = this.getSlide(); - this._updateTranslation(); - } }); const ThumbnailsSlider = new Lang.Class({ @@ -600,18 +589,14 @@ const ControlsManager = new Lang.Class({ return; let activePage = this.viewSelector.getActivePage(); + let dashVisible = (activePage == ViewSelector.ViewPage.WINDOWS || activePage == ViewSelector.ViewPage.APPS); - let thumbnailsVisible = (activePage == ViewSelector.ViewPage.WINDOWS); - - if (dashVisible) - this._dashSlider.slideIn(); - else + if (!dashVisible) this._dashSlider.slideOut(); - if (thumbnailsVisible) - this._thumbnailsSlider.slideIn(); - else + let thumbnailsVisible = (activePage == ViewSelector.ViewPage.WINDOWS); + if (!thumbnailsVisible) this._thumbnailsSlider.slideOut(); }, @@ -624,8 +609,16 @@ const ControlsManager = new Lang.Class({ }, _onPageEmpty: function() { - this._dashSlider.pageEmpty(); - this._thumbnailsSlider.pageEmpty(); + let activePage = this.viewSelector.getActivePage(); + + let dashVisible = (activePage == ViewSelector.ViewPage.WINDOWS || + activePage == ViewSelector.ViewPage.APPS); + if (dashVisible) + this._dashSlider.slideIn(); + + let thumbnailsVisible = (activePage == ViewSelector.ViewPage.WINDOWS); + if (thumbnailsVisible) + this._thumbnailsSlider.slideIn(); this._updateSpacerVisibility(); }